﻿/* Original Author:  Dominick O'Dierno
 * Date: 6/9/2008   odiernod@gmail.com     --Originally intended for use with DOMercury:  http://www.odierno.com/domercury
 * Description: Provides an interface to provide IItems to the DOMercury index, which are re-evaluated at realtime
 * 
 * --CHANGELOG--
 * 
 * */

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;


namespace DOMercury.Interfaces
{
    /// <summary>
    /// The Same as the IItemProvider, only these IItems are re-evaluated at realtime.  It is important to make the Items property return results quickly.
    /// </summary>
    public interface IItemRealtimeProvider
    {
        /// <summary>
        /// The name of your IItemProvider
        /// </summary>
        string Name
        {
            get;
        }
        /// <summary>
        /// The description of your IItemProvider
        /// </summary>
        string Description
        {
            get;
        }

        /// <summary>
        /// A list of items to add to DOMercury's index
        /// </summary>
        List<IItem> Items
        {
            get;
        }

        /// <summary>
        /// A list of custom icons to use with the items in your provider.  If unused, return an empty list.
        /// </summary>
        List<IconPair> CustomIcons
        {
            get;
        }

        /// <summary>
        /// Indicates whether or not this plugin has an options form.  Return false if not supplying an options form
        /// </summary>
        bool HasOptions
        {
            get;
        }

        /// <summary>
        /// This is the function that gets called when the user hits the "Show Options" but in the Plugin Details form.  You should call "ShowDialog" on your options form here.
        /// </summary>
        void ShowOptions();
    }
}
